phirephly / aprx Goto Github PK
View Code? Open in Web Editor NEWA highly configurable APRS I-gate/Digipeater Daemon
Home Page: http://thelifeofkenneth.com/aprx/
License: BSD 3-Clause "New" or "Revised" License
A highly configurable APRS I-gate/Digipeater Daemon
Home Page: http://thelifeofkenneth.com/aprx/
License: BSD 3-Clause "New" or "Revised" License
Aprx contains no behavior for APRS Messaging. At a minimum, aprx should reject all messages directed at any of its aprx_interfaces. Further actions based on APRS Messages (forward as email, send to syslog, etc) would be a nice bonus but not as important from a spec compliance point of view.
Hi,
is this software still under development/support?
I have got the following build error:
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c aprx.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c ttyreader.c
In Datei, eingebunden von /usr/include/bits/libc-header-start.h:33,
von /usr/include/stdio.h:27,
von aprx.h:13,
von ttyreader.c:13:
/usr/include/features.h:187:3: Warnung: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
ttyreader.c: In Funktion »aprx_cfmakeraw«:
ttyreader.c:706:1: Warnung: Typ von »f« ist auf »int« voreingestellt [-Wimplicit-int]
706 | aprx_cfmakeraw(t, f)
| ^~~~~~~~~~~~~~
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c ax25.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c aprsis.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c beacon.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c config.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c netax25.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c erlang.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c aprxpolls.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c telemetry.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c igate.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c cellmalloc.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c historydb.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c keyhash.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c parse_aprs.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c dupecheck.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c kiss.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c interface.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c pbuf.c
In Datei, eingebunden von /usr/include/bits/libc-header-start.h:33,
von /usr/include/stdio.h:27,
von aprx.h:13,
von pbuf.c:13:
/usr/include/features.h:187:3: Warnung: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c digipeater.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c valgrind.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c filter.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c dprsgw.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c crc.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c agwpesocket.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c netresolver.c
gcc -g -O2 -pthread -DAPRXVERSION="\"2.9.0-28-g13c6e79\"" -DVARRUN="\"/var/run\"" -DVARLOG="\"/var/log/aprx\"" -DCFGFILE="\"/etc/aprx.conf\"" -c timercmp.c
gcc -o aprx aprx.o ttyreader.o ax25.o aprsis.o beacon.o config.o netax25.o erlang.o aprxpolls.o telemetry.o igate.o cellmalloc.o historydb.o keyhash.o parse_aprs.o dupecheck.o kiss.o interface.o pbuf.o digipeater.o valgrind.o filter.o dprsgw.o crc.o agwpesocket.o netresolver.o timercmp.o -lutil -lm -pthread
/usr/bin/ld: ttyreader.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: ttyreader.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: ax25.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: ax25.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: aprsis.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: aprsis.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: beacon.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: beacon.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: config.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: config.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: netax25.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: netax25.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: erlang.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: erlang.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: aprxpolls.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: aprxpolls.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: telemetry.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: telemetry.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: igate.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: igate.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: historydb.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: historydb.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: parse_aprs.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: parse_aprs.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: dupecheck.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: dupecheck.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: kiss.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: kiss.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: interface.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: interface.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: pbuf.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: pbuf.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: digipeater.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: digipeater.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: filter.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: filter.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: dprsgw.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: dprsgw.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: crc.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: crc.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: agwpesocket.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: agwpesocket.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: netresolver.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: netresolver.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
/usr/bin/ld: timercmp.o:/home/dl1ue/aprx/aprx.h:45: multiple definition of `pthr_attrs'; aprx.o:/home/dl1ue/aprx/aprx.h:45: first defined here
/usr/bin/ld: timercmp.o:/home/dl1ue/aprx/aprx.h:44: multiple definition of `aprsis_thread'; aprx.o:/home/dl1ue/aprx/aprx.h:44: first defined here
collect2: Fehler: ld gab 1 als Ende-Status zurück
make: *** [Makefile:102: aprx] Fehler 1
GCC:
gcc --version
gcc (GCC) 10.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
Is there a possible solution?
Thanks!
Aprx tries to construct beacons with a src address of APRSIS if you have an APRSIS block, a beacon block, and no interface blocks.
The current workaround is to set the srccall parameter in the beacon block.
Hi folks,
I try to connect to my modem. Edited the config. After that all starts ending with
pi@db0sbn-aprs ~ $ sudo aprx
Speicherzugriffsfehler"
If I '#' the interface, aprx is running.
First, thanks for all your hard work on APRX, it's awesome!
Now, the issue: apparently the old APRSmax used APRXxx for its tocall, and at least one system, the CWOP Weather Quality Reporter, reports my APRX station as running APRSmax (https://weather.gladstonefamily.net/site/AV633) as well as other stations with APRXxx tocalls. Is APRSmax likely still in use anywhere? Should I just send the CWOP folks an email letting them know what I'm running and suggesting they change their system? My cursory googling didn't find much on APRSmax, so I assume it's defunct, but if not, I'm afraid there may be a conflict.
73
-Rob, KG4WGN
Someone just configured heartbeat-timeout 10, and then asked me why aprsc is rejecting the aprx.
Turned out that aprx was disconnecting due to the timeout every 10 seconds, since APRS-IS servers just don't send a heartbeat that often. The description of the timeout in the example config is maybe a bit difficult to understand.
IMHO it'd be nice if aprx would not allow a heartbeat-timeout value of less than 25 seconds at all, except when disabling the timeout (which would not be a great idea either, a serious warning should be logged).
I am using a script for beaconing:
beacon timeout 20 exec /home/pi/APRS/aprs_eddt.sh
After a certain amount of time (some days or more), the result of the script is no more recognized by APRX, the grabbed for the beacontext is empty. I have to restart the application and everything went well again.
The output of the bash script is proofed/working reliable.
Per Hes, an I-gate only config doesn't add heard stations to the historydb, so implicit IS-to-RF gated packets get dropped as the stations haven't been "heard" on the RF interface.
note that 'now' is not declared:
void printtime(char *buf, int buflen)
{
struct tm *t = gmtime(&now.tv_sec);
// strftime(timebuf, 60, "%Y-%m-%d %H:%M:%S", t);
sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
t->tm_year+1900,t->tm_mon+1,t->tm_mday,
t->tm_hour,t->tm_min,t->tm_sec);
}
probably should add something like:
time_t now;
time ( &now );
Not sure if gmtime should be called with &now.tv_sec or with simply &now as an argument
When a beacon line includes "timefix" and the 111111z timestamp, the expected behavior is that the reserved dummy timestamp gets replaced with the current properly formatted timestamp. It appears that all timefix insertions are to "000000h"
For initial bisection, see this thread: https://groups.google.com/forum/#!topic/aprx-software/1QTZVbTy9PI
Unless I am missing something it looks like aprx doesn't currently support compressed position in beacons. They can be achieved using the raw beacon feature but it would be nice if they were supported natively. Also having the ability for the digipeater to convert incoming packets to compressed format before digipeating would be nice.
The user manual does not make it clear that regex-filter is using POSIX extended regular expressions for the regex-filter rejection system.
This should not include packet display/analysis, since that can be done via any backend consuming the aprx-rf.log files.
Possible counters displayed could include packets in and out per interface, uptime, etc.
I'm guessing this bug was introduced in commit 0e5c89e.
I have a hostname with a couple of IPv4 addresses and an IPv6 address:
igates.aprs.fi has address 85.188.1.122
igates.aprs.fi has address 193.185.39.21
igates.aprs.fi has IPv6 address 2001:67c:15c:1::122
I'm running aprx on an RPi which does not have IPv6 available locally. 193.185.39.21 happens to be down right now, 85.188.1.122 would be up and serve customers just fine (I can telnet igates.aprs.fi 14501 from the RPi).
aprx (current git master commit 79201f8) fails to try all addresses in the round-robin. It seems to try 193.185.39.21, it fails (unfortunately does not log the IP address being attempted!). Then it tries the IPv6 one, which fails (no IPv6 available currently), and it does not try 85.188.122.
2015-08-02 11:21:20.299 CLOSE APRSIS igates.aprs.fi:14580 fail on connect
2015-08-02 11:21:20.300 FAIL - Connect to igates.aprs.fi:14580 failed: socket formation failed - errno=97 - Address family not supported by protocol
2015-08-02 11:21:20.300 CLOSE APRSIS igates.aprs.fi:14580 reconnect
2015-08-02 11:23:29.259 CLOSE APRSIS igates.aprs.fi:14580 fail on connect
2015-08-02 11:23:29.259 FAIL - Connect to igates.aprs.fi:14580 failed: socket formation failed - errno=97 - Address family not supported by protocol
2015-08-02 11:23:34.261 CLOSE APRSIS igates.aprs.fi:14580 reconnect
2015-08-02 11:25:41.739 CLOSE APRSIS igates.aprs.fi:14580 fail on connect
2015-08-02 11:25:41.739 FAIL - Connect to igates.aprs.fi:14580 failed: socket formation failed - errno=97 - Address family not supported by protocol
2015-08-02 11:25:46.745 CLOSE APRSIS igates.aprs.fi:14580 reconnect
According to the OpenSSL API document,
X509_STORE_CTX_get_current_cert() returns the certificate which caused the error or NULL if no certificate is relevant to the error.
X509_STORE_CTX_get_current_cert() was never NULL. Applications should check the return value before printing out any debugging information relating to the current certificate.
So it will be safer to check cert
first before using it.
Lines 486 to 494 in 13c6e79
Per John Bass:
I have found the issue, the problem is within the erlang.c file.
If seems there is a variable set on around line 282
erlang_data_is_nonshared = 1;
This stops the stats...!
One of the recommendations here is that digipeaters should use location names for their callsigns (with their FCC issued callsigns in the comment).
When I do this with the callsign of PEPPRPIKE (which is valid), I get this:
parse_ax25addr('PEPPRPIKE') failed. [1]
Looking at ax25.c, it looks like it's hardcoded to expect a callsign of up to 6 characters, then a dash and SSID. So when it doesn't see the dash (or a * or null), it bombs and returns 1.
The request here is that it should properly support up to 9 characters without an SSID.
APRS-IS login depends on there being two software ident tokens before any "filter ..." options. When APRX is built incorrectly with a "" version string, the APRS-IS server interprets "filter" as the version and can not correctly parse the login string.
Proposed solution is to somewhere between the build system and the APRS-IS login function substitute "" with "UNKNOWN"
Now the only way to set parameters of a kiss modem is add something like the following to interface section:
initstring "\x00\xc0\x01\x20\xc0\xc0\x02\x80\xc0\xc0\x03\x0a\xc0\xc0\x04\x02\xc0\x00"
This is the HEX rapresentation of 4 kiss frames:
\xc0\x01\x20\xc0 -> TXDELAY 32
\xc0\x02\x80\xc0 -> P 128
\xc0\x03\x0a\xc0 -> SLOTTIME 10
\xc0\x04\x02\xc0 -> TXTAIL 2
It could be better to insert these parameters in configuration and let Aprx to build the frames.
Other nice feature could be auto self-adjust parameters (P and SLOTTIME) based on the channel traffic (Like agwpe).
While browsing through the code I found this line:
Line 149 in 13c6e79
Many packets getting digipeated are logged with a carriage return at the end. Hopefully this isn't also getting appended to the transmitted packets.
2016-11-13 15:03:21.017 BALDI R W7COA-9>TXQXPP,WIDE1-1,WIDE2-1:`2E!l!Aj/`"4l}_"
2016-11-13 15:03:21.018 VBALDI T W7COA-9>TXQXPP,VBALDI*,WIDE2-1:`2E!l!Aj/`"4l}_"<0x0d>
Only one server is used, the last one defined.
AIShcount is not incremented when processing the config.
The last lines in aprsis.c for aprsis_config is missing the ++ to increment the counter.
AISh = realloc(AISh, sizeof(AISh[0]) * (AIShcount + 1));
AISh[AIShcount++] = AIH;
When using the kernel AX.25 facilities, APRX sends all packets from the source callsign of the AX.25 interface, not the callsign configured in aprx.conf.
See: https://groups.google.com/forum/#!topic/aprx-software/XK3OTGeJ20A
It would appear that something causes Aprx to not log the transmission of some subset of packets it digipeats.
Expected log entries for a digipeated packet:
TIMESTAMP MYCALL R THEIRCALL>APRS,WIDE1-1:,packet
TIMESTAMP MYCALL T THEIRCALL>APRS,MYCALL*:,packet
What seems to happen (while the packet is actually still transmitted):
TIMESTAMP MYCALL R THEIRCALL>APRS,WIDE1-1:,packet
It would seem there is some code path in the digipeating logic which skips logging...
A digipeater configured with an alias such as NCA
will match and respond to NCAFFF
like it were a bare pre-n-N NCA. Presumably the only valid aliases to match on a definition would be:
Adding filters to a digipeater source block breaks standard WIDEn-N digipeating on that digipeater.
<digipeater>
transmitter $mycall
<source>
source $mycall
filter "-b/CALL*"
</source>
</digipeater>
Bug reported by Beau [email protected]
https://groups.google.com/forum/#!topic/aprx-software/qwh3UAJ3mAM
The manual contains a link to to http://ham.zmailer.org/oh2mqk/aprx/ which is now out of date. The link should be changed to http://thelifeofkenneth.com/aprx/.
When a beacon exec is canceled via a blank response from the script, the aprx.log file only says "beacon exec canceled" without any insight into which of possibly many beacons was canceled.
An improved log line could include the exec command which was canceled.
I want my digipeater to support OH7-7. So I configured it as such:
<source>
source $mycall
viscous-delay 1
<trace>
maxreq 3
maxdone 3
keys WIDE,TRACE
</trace>
<wide>
maxreq 7
maxdone 7
keys OH
</wide>
</source>
Yet, when I send an OH7-7 packet:
2015-11-15 16:12:33.823 NEWBRY R KD8TWG>APWW10,OH7-7:=/9PDM9sX`- sTTesting OH7-7.
2015-11-15 16:12:34.585 NEWBRY T KD8TWG>APWW10,NEWBRY*,OH7-7*:=/9PDM9sX`- sTTesting OH7-7.
2015-11-15 16:12:34.588 NEWBRY R KD8TWG>APWW10,KF8YK-2*,OH7-6:=/9PDM9sX`- sTTesting OH7-7.
2015-11-15 16:12:35.589 NEWBRY R KD8TWG>APWW10,N8BHU-1*,OH7-6:=/9PDM9sX`- sTTesting OH7-7.
2015-11-15 16:12:37.888 NEWBRY R KD8TWG>APWW10,K8UI-1*,OH7-5:=/9PDM9sX`- sTTesting OH7-7.
As you can see, my digipeater (NEWBRY) is not decrementing the path correctly.
None of the configuration examples include the passcode directive in the APRSIS sections!
make make-deb fails since I deleted the out of date ROADMAP file. I should write a new one.
dh_installdocs
cp: cannot stat 'ROADMAP': No such file or directory
dh_installdocs: cp --reflink=auto -a ROADMAP debian/aprx/usr/share/doc/aprx returned exit code 1
debian/rules:66: recipe for target 'binary-arch' failed
make[1]: *** [binary-arch] Error 2
make[1]: Leaving directory '/home/kenneth/src/aprx/aprx-2.9.0'
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
Makefile:198: recipe for target 'make-deb' failed
make: *** [make-deb] Error 2
I believe this is the actively maintained APRX repo. However, when I looked in the README, it references an apparently dead SVN repo. Please update the docs to make it clear that this is the place, if it in fact is. Thanks.
When APRX consumes an alias, it leaves the empty WIDEn* alias in the path, which apparently breaks feedback on Kenwood radios that an echo was heard from an APRX digipeater.
See: https://groups.google.com/forum/#!topic/aprx-software/bT187GQZbG0
Aprx periodically beacons PARM, UNIT, and EQNS Telemetry Report Formatters such that traffic telemetry may be rendered correctly. The BITS formatter sets the "Project Name" for the telemetry, and should possibly be included in the beacon rotation.
@w8vfr reports Aprx digipeating a packet with an empty path:
2016-11-16 01:04:19.662 W8VFR-8 R W8VFR-3>APRX28:/010418h3938.06NI08421.26W#33KM digigate
2016-11-16 01:04:19.665 W8VFR-8 T W8VFR-3>APRX28:/010418h3938.06NI08421.26W#33KM digigate
Please add any insight as to the frequency of these errors, and attach your complete config file for Aprx.
Is it possible to configure the KISS preamble and tx tail? The packets from my TNC are pretty short so I'm not getting decoded often. If I fire up Xastir and use the same TNC with a longer preamble and tail, I get decoded more reliably.
Lines 148-153 of ax25.c are:
if (framelen > sizeof(tnc2buf) - 80) {
/* Too much ! Too much! */
return 0;
}
where tnc2buf is a function parameter char *tnc2buf. sizeof() has 'unsigned int' type, in a 32-bit binary, sizeof(char *) is 4U so this test re-writes
as:
if (framelen > 4U - 80U) {
which simplifies to:
if (framelen > 4294967224) {
Which I'll say is too much! too much! but sadly has nothing to do with the size of the supplied tnc2buf. Perhaps this test yearns to be:
if (framelen > tnc2buflen) {
When a section is defined without a specific interface, it appears to not correctly beacon on ALL interfaces per the APRX 2.08 manual, but only some single interface.
When other users enter paths like "WIDE1-1, WIDE2-1" with a space and their tracker doesn't properly tokenize the path, the resulting packet may appear to be invalid since the leading space in WIDE2-1 makes it seem like it's a zero length callsign.
Consider making ax25.c:ax25_to_tnc2_fmtaddress() more liberal with its parsing than the strict A-Z0-9, then only spaces, interpretation.
It seems like if you accidentally have lines with only tabs in them, they cause the config parse to puke on unknown entities.
Hello everybody,
I'm running an APRX Igate in my community for a long time using an RPi. I love it! because it's really very stable and until now works flawlessly.
Today I'm was needed to avoid TX any packet and my first thougth was to edit my config and in my section edit the "tx-ok true" option to false..
Then I restarted the service, but the service don't started...
On the syslog these lines point to me the problem:
May 28 12:13:47 raspberrypi3 systemd[1]: Starting LSB: start and stop aprx...
May 28 12:13:47 raspberrypi3 aprx[10002]: /etc/aprx.conf:93 ERROR: This transmit interface has no TX-OK TRUE setting: 'CX8FS-2'
May 28 12:13:47 raspberrypi3 aprx[10002]: ERROR: Failures on defining block parameters
May 28 12:13:47 raspberrypi3 aprx[10002]: APRS RF-Telemetry will not be activated.
May 28 12:13:47 raspberrypi3 aprx[10002]: /etc/aprx.conf:99 ERROR: This transmit interface has no TX-OK TRUE setting: 'CX8FS-2'
May 28 12:13:47 raspberrypi3 aprx[10002]: ERROR: Config fault observed on definitions!
May 28 12:13:47 raspberrypi3 aprx[10002]: Seen configuration errors. Aborting!
May 28 12:13:48 raspberrypi3 systemd[1]: Started LSB: start and stop aprx.
The problem seems to be a conflict between the tx-ok=false and the sections on the config who expected a TX enabled and exited the execution with an error.
I think maybe it's a harsh behavior, because the parser only need to ignore these parts of the config who are useless for a RX-Only.
My actual interface and telemetry sections are this.
<interface>
serial-device /dev/ttyAMA0 19200 8n1 KISS
callsign $mycall
tx-ok true # transmitter enable defaults to false
#telem-to-is false # set to 'false' to disable
</interface>
......
<telemetry>
transmitter $mycall
via TRACE1-1
source $mycall
</telemetry>
Needless to say, the configuration is correct and the behavior of APRX when the transmission is enabled works without problems.
Thanks in advance..
Claudio CX8FS
I was trying to install to /usr/local instead of in root and ./configure --prefix=/usr/local does not work properly. APRX was still installed to /sbin/aprx instead of /usr/local/sbin/aprx
Update the documentation in section 3.6.7 to make it more clear that TNC2 interfaces can only be used for I-gates, and incoming packets can't be transmitted on any other interface as well as on the TNC2 interface itself.
Email thread: http://www.tapr.org/pipermail/aprssig/2016-August/046011.html
When running in D-PRS mode, the only messages loggeg in dprs.log are still aprs-messages, but in an unreadable format. Does D-PRS logging require a D-Star handset to be connected with a datacable, or is it just broken?
The manual currently only gives a few examples of symbol syntax. This should be expanded to instead be a clear selection guide for the primary applications of Aprx.
To include FreeBSD related commits ?
http://www.aprs.org/digis/digi-rates.txt contains information on how digipeaters/igates should identify themselves.
The manual should contain information on how to configure this.
aprx can log R, T, or d. d should be documented.
When aprx is run with -d, it still daemonizes enough to ignore ^C from the controlling console. Aprx needs some way to be killed in the foreground.
On request of irc.debian/#debian-hams/Colin, please exclude the /debian folder from shipping tarballs.
Rewrite documentation for building your own debs to handle upstream tarballs lacking the debian build target.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.