Giter Club home page Giter Club logo

aprsd's Introduction

Polaric APRSD

The "Polaric Server" is mainly a web based service to present APRS tracking information on maps and where the information is updated in real-time. It is originally targeted for use by radio amateurs in voluntary search and rescue service in Norway. It consists of a web application and a server program (APRS daemon).

The APRS daemon gets data from a TNC or APRS-IS or a combination. It can present and manipulate the information through a simple HTTP service (REST API). The daemon can also be set up as an igate (internet gateway) and can be installed and run independently of the web app. It has its own webserver.

It is recommended to combine it with polaric-webapp2. It supports CORS to allow it to be used with a polaric-webapp2 on another location.

http://aprs.no runs a recent version of this software. More documentation on the project can be found here: http://aprs.no/polaricserver or https://polaricserver.readthedocs.io

System requirements

Linux/Java platform (tested with Debian/Ubuntu) with

  • Java Runtime environment version 17 or later.
  • jsvc.
  • librxtx-java (if using serial port for communication with TNC or GPS).
  • libjackson2 (for JSON processing)
  • libcommons-codec

We support deb installation packages for Linux distros that can use it (Debian, Ubuntu, ..) It shouldn't be too hard to port it to e.g. Windows if anyone wants to do the job.

We also use the following external libraries. jar files are included:

  • Jetty and Spark framework (HTTP server)
  • pac4j framework (authentication/authorization)
  • nano-cuckoo with lz4
  • jMDNS

Installation

We provide deb (Debian/Ubuntu..) packages. For information on getting started on a Debian based platform please see: https://polaricserver.readthedocs.io/en/latest/gettingstarted.html

Documentation on the project can be found here: http://aprs.no/polaricserver

To configure a server, use the webapp2. Some command-line scripts are also available: polaric-setcall, polaric-password,

For first-time login use account: username=admin, password=polaric. Remember to change the password at your fist convenience.

Se also: Examples of how to use it with Docker.

Building from source

Build from the source is done by a plain old makefile. Yes I know :) Maybe I move to something else (Maven, Gradle) later. Setup for generating deb packages is included. You may use the 'debuild' command.

You will need JDK (Oracle or OpenJDK) version 17 or later.

aprsd's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

aprsd's Issues

A couple of missing build depends

Those are additional build depends for Debian that are necessary to successfully build aprsd (validated on Debian Buster for RPi) :

  • byacc-j
  • jflex
  • librxtx-java

:)

Consider system tags

I.e. tags that can only be set or changed by the admin user or system itself. We can also consider if all tags need to be shown to the user or if some tags should be sent over to the client.

Use Websockets for pushing updates from server to client

This would be more efficient and less error prone than blocking ordinary HTTP requests. It should be used for pushing XmlOverlays. See issue posted on webapp: PolaricServer/webapp#12. Websockets could also be used for instant messaging.

We may also consider using JSON instead of XML.

A branch is created. The simple framework supports this.

Documentation Improvements

Hello,

I've been looking around on the aprs.no site as well as a third-party site (APRS Box) and I'm struggling to find documentation that has more "real world" examples of how to configure Polaric APRS and the corresponding web server.

One very basic thing I haven't been able to find is how to reconfigure the language for the web interface to English. What am I missing here?

Is there any other documentation other than what's on aprs.no and Github that you can share?

Thank you!

Authentication and authorization

Currently, we use an Apache frontend for this and for SSL/TLS. Now, do this in the aprsd. Use a framework that easily can be configured with alternative authentication methods: Basic-auth, forms, oauth2, openid, etc... Consider Pac4j.

Web server should support SSL/TLS

For online services we currently access the webserver via an Apache proxy that is configured with SSL/TLS and proper certificates. Consider implementing this in aprsd since we have moved to Jetty. Perhaps not a big issue since we use Apache for mapcache anyway. It may simplify things and making it more secure though.

Run-time config support

Support for run-time changes to config and re-loading config in configurable classes and objects.

REST api for own aprs objects

For adding or updating objects. For deleting objects.
Consider if objects should be owned by users. Maybe at a later stage.

Save logins

When server shuts down/restarts, logins are lost. Consider saving them.

Filtering based on tags

Some of the properties of point objects could be tags that could be added programmatically, by user or by filter actions. Implement tags on point objects. This could be realised by a full semantic RDF store, but I guess we start with something simpler, e.g. that each object can have a set of textual tags. Maps (name->value) could also be considered.

There should be some rules for tags. They could be prefixed by some domain name, eg. "aprs", "ais", "sar", etc..

Parsing issue ?

The following packet is decoded by aprsd as "moving faster than 500km/h" ?

direwolf: [0.3] AE6LA-12>APU25N,N6ZX-3,WIDE1*,WIDE2-1:@062116z3756.87N/12200.49WR236/040/A=000181 Ken from Arnold {UIV32N}<0x0d>
direwolf: Position with time, REC. VEHICLE, UIview 32 bit apps
direwolf: N 37 56.8700, W 122 00.4900, 46 MPH, course 236, alt 181 ft
direwolf: Ken from Arnold {UIV32N}

polaric [rf0] AE6LA-12>APU25N,N6ZX-3_,WIDE1_,WIDE2-1:@062116z3756.87N/12200.49WR236/040/A=000181 Ken from Arnold {UIV32N}
polaric APRS *** Moving faster than 500km/h. ignore.

Move to Java 8.

The problem is that the version of Scala supported by the current Debian Stable breaks with Java 8 and the version supported by Debian Testing/Unstable has removed the XML coding stuff that we rely on.

The current fix is to force the use of Java 7 compatibility mode when compiling and running.

Installation Issues

Hello,
is it possible that the installation instructions on the wiki are outdated? The key seems invalid and the keyserver acts weird. Could someone take a look?

Persistent config overrides

Run-time config. Default parameters are in server.ini. In addition we want to be able to change some parameters at run-time. Such overrides should also be made persistent.

Packets never showing up on map

Maybe linked to telemetry support? The reports below never end up on the Polaric Webapp map, though they are forwarded by aprsd (they show up on aprsdroid):

polaric APRS 03 nov 2015 01:12:09 [rf0] N8QH-9>APOT30,N6ZX-3*,WIDE1*,WIDE2-1:
direwolf APRS Nov 3 01:17:10 aprs direwolf: [0.4] N8QH-9>APOT30,N8QH-9,N6ZX-3,WIDE2*:<0x0a>$ULTW012F00F502A700772765000085A0000102390131041A000000CD<0x0d>
polaric APRS 03 nov 2015 01:17:10 [rf0] N8QH-9>APOT30,N8QH-9*,N6ZX-3*,WIDE2*:
direwolf APRS Nov 3 01:22:10 aprs direwolf: [0.4] N8QH-9>APOT30,N8QH-9,N6ZX-3,WIDE2*:<0x0a>$ULTW012900EF02A600772764000085A00001023B0131041F000000BE<0x0d>
polaric APRS 03 nov 2015 01:22:10 [rf0] N8QH-9>APOT30,N8QH-9*,N6ZX-3*,WIDE2*:
direwolf APRS Nov 3 01:27:08 aprs direwolf: [0.3] N8QH-9>APOT30,N6ZX-3,WIDE1*,WIDE2-1:<0x0a>$ULTW00D2001602A500772763FFFF85A00001023D013104240000008F<0x0d>
polaric APRS 03 nov 2015 01:27:09 [rf0] N8QH-9>APOT30,N6ZX-3*,WIDE1*,WIDE2-1:
direwolf APRS Nov 3 01:27:44 aprs direwolf: [0.3] N8QH-9>APOT30,N6ZX-3,WIDE1*,WIDE2-1:/012741h/;Qr(/QwDY st 13.1V 71F HDOP00.7 SATS16
polaric APRS 03 nov 2015 01:27:44 [rf0] N8QH-9>APOT30,N6ZX-3*,WIDE1*,WIDE2-1:/012741h/;Qr(/QwDY st 13.1V 71F HDOP00.7 SATS16
direwolf APRS Nov 3 01:27:47 aprs direwolf: [0.4] N8QH-9>APOT30,N8QH-9,N6ZX-3,WIDE2*:T#092,132,059,063,041,048,00000000
polaric APRS 03 nov 2015 01:27:48 [rf0] N8QH-9>APOT30,N8QH-9*,N6ZX-3*,WIDE2*:T#092,132,059,063,041,048,00000000
direwolf APRS Nov 3 01:32:10 aprs direwolf: [0.3] N8QH-9>APOT30,N8QH-9,N6ZX-3,WIDE2*:<0x0a>$ULTW00BD002202A300772763FFFF85A00001023D0131042900000080<0x0d>

polaric APRS 03 nov 2015 01:32:10 [rf0] N8QH-9>APOT30,N8QH-9_,N6ZX-3_,WIDE2*:

Unable to install webapp2 via apt in Docker

Hei Øyvind πŸ™‚

This bug seems to be related to commit b28d908. The commit message ("postinst fix") indicates that it fixes some other issue related to these files, but does not reference the actual change that required this "fix". I believe I'm experiencing another bug related to what b28d908 fixed.

The installation was working flawlessly with aprsd 2.6.2 and webapp2 1.5.1, so the issue seems to have been introduced in some release after those.

Here is the gist of my output when trying to install polaric-aprsd and polaric-webapp2:

Setting up polaric-webapp2 (1.6) ...
chown: cannot access '/var/lib/polaric/mapcache/*.db': No such file or directory
dpkg: error processing package polaric-webapp2 (--configure):
 installed polaric-webapp2 package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.28-10) ...
Errors were encountered while processing:
 polaric-webapp2

Any idea what's changed related to these files?

I have a feeling these (missing) files are generated after the first run of aprsd(?), and the installation of webapp2 is failing because it requires aprsd to be started on the system prior to installation. Any way this can be fixed?


Here is my Dockerfile, showing all commands executed:

FROM debian:stable-slim

# Add polaric-server apt repo
RUN apt-get update && apt-get -y install gnupg2 dirmngr
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys 89E7229CFFD59B2F && gpg --export --armor 3E61003E24632585EB3DFE3D89E7229CFFD59B2F | apt-key add -
RUN echo "deb http://aprs.no/debian-rep binary-dev/" >> /etc/apt/sources.list && apt-get update

# Install Java (with hack for slim image)
RUN mkdir -p /usr/share/man/man1
RUN apt-get -y install default-jdk-headless

# Install polaric components
RUN apt-get -y install polaric-aprsd polaric-webapp2 polaric-ais-plugin

Implement APRS bulletin board

As described in APRS protocol reference chapter 14. Try to follow recommendations. Alert users using notifications.

Move to Java 9 and later (10, 11)

There is at least one practical problem doing this:

Debian stable doesn't have Java 9, it is available as a backport, but Scala breaks. Scala seems to be updated in Debian Buster (Testing) but there is no backport. The release is estimated to be mid 2019 which in my opinion is far to long to wait!! This is a known problem with Debian releases.

So, is it ok if the next version of Polaric aprsd requires Debian Testing, Unstable, Ubuntu 18 or later?

Short messaging support

Directly between users, between users on different servers or APRS messaging. REST API for sending messages or reading the mailbox. Notifications of new messages.

unable to open serial port tnc-pi

hi im configuring a tnc-pi using serial port.

but get this error
okt. 21 14:19:10 ERROR (TncChannel): [rf0] Serial port /dev/serial0 not found gnu.io.NoSuchPortException at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:269) at no.polaric.aprsd.TncChannel.connect(TncChannel.java:105) at no.polaric.aprsd.TncChannel.run(TncChannel.java:153) at java.base/java.lang.Thread.run(Thread.java:834

the por its up and running , i can acces to tnc-pi usign serial 0
image
image

How should the port permissions be configured so that polaric can access the port?

apt+GPG error: Unable to verify key signature AC382CF55FAC3327

Hi,

According to the wiki the deb repo should be verified using the key with fingerprint 89E7229CFFD59B2F. I have successfully installed that key in my keychain as described in the wiki.

However, when I try to run apt update it refuses because it is unable to verify the key AC382CF55FAC3327. That key signature is not known to keys.openpgp.org, and differs from the one mentioned on the wiki page.

Am I doing something wrong, or did you switch keys for the repo without publishing it to a known keyserver? πŸ™‚

Log output:

#6 0.569 Err:2 http://aprs.no/debian-rep binary-dev/ InRelease
#6 0.569   The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AC382CF55FAC3327
#6 0.811 Reading package lists...
#6 1.447 W: GPG error: http://aprs.no/debian-rep binary-dev/ InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AC382CF55FAC3327

Position object class hierarchy.

Change class hierarchy to better support other types of position objects than APRS. Some parts of APRS specific classes can be moved to a new generic class. This include functionality like waiter notification, labels, aliases, icon-selection, persistence, expiry, etc.

NullPointerException in TrackerPoint.saveToTrail

I'm suddenly seeing lots of NullPointerExceptions in the log. No changes in the setup, so I'm guessing this is due to some recent data in AIS feed that trigged this.

aprsd_1       | java.lang.NullPointerException
aprsd_1       | 	at no.polaric.aprsd.TrackerPoint.saveToTrail(TrackerPoint.java:182)
aprsd_1       | 	at no.polaric.ais.AisChannel.updatePos(AisChannel.java:106)
aprsd_1       | 	at no.polaric.ais.AisChannel.updatePosExtra(AisChannel.java:116)
aprsd_1       | 	at no.polaric.ais.AisChannel$1.accept(AisChannel.java:195)
aprsd_1       | 	at no.polaric.ais.AisChannel$1.accept(AisChannel.java:184)
aprsd_1       | 	at dk.dma.ais.reader.AisReader.distribute(AisReader.java:218)
aprsd_1       | 	at dk.dma.ais.reader.AisReader.readLoop(AisReader.java:200)
aprsd_1       | 	at dk.dma.ais.reader.AisTcpReader.run(AisTcpReader.java:113)

_db.getRoutes().removeOldEdges(getIdent(), _trail.oldestPoint());


It might be unrelated, but the webapp2 frontend code started failing at the same time:

Skjermbilde 2021-05-16 kl  11 39 38
Skjermbilde 2021-05-16 kl  11 39 25

not working on Rpi B+ v1.2

Hello
thank you for developing this program.

I tried to install on a RPI B+ v1.2

but it was not possible, because of this error, I suppose it is too old for the required software.

Error occurred during initialization of VM Server VM is only supported on ARMv7+ VFP
raw output apt install . . https://pastebin.com/raw/7r4EUW9A

the RPI B+ v1.2 uname result
Linux raspberrypi-aprs 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l GNU/Linux

i will try on a RPI 3 B+

:D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.