README.md
- 1. Introduction
- 2. Current State
- 3. Building and installing
- 4. Contributing
- 5. Version History
- 6. Future
1. Introduction
This is a port of G4KLX Jonathan Naylor's ircddbGateway. It is wxWidgets free and has minimal dependencies to boost (header libs only) and libcurl. I plan to ad some features in the future
2. Current State
2.1. Code sanity
The current code is working, yet ugly IMHO as it is a mix of C and C++ of various ages. I realised that G4KLx started programming this over a decade ago, when C++11 was not yet a thing !
The code has also been amended to no longer rely on compiler defines for paths like log or data. These can be set in configuration file.
Quite a few classes are more or less copy/paste from each other some sanitization by using base classes or template classes would greatly improve code maintainibility. Maybe one day ;)
2.2. Code Credit
- Jonathan Naylor G4KLX (The original author of ircddbGateway)
- Thomas A. Early N7TAE (Code taken from his smart-group software)
- Geoffrey Merck F4FXL / KC3FRA That's me !
2.3. Features
All the features found in ircddbGateway are supposed to be working. I have mixed feelings about putting these back in or not.
Features that where left out :
- CCS: is still being used? I always considered this as trojan horse to push some DMR Agenda into DStar an more or les a burdain to use. Call sign routing is by far more flexible and superior.
- Starnet: You might consider running Smart Group Server XL from a dedicated computer instead.
- Announcement: same can be achieved using VoiceTransmit.
- APRSGateway capability: I would prefer to have some sort of TCP "APRS-IS proxy" program sitting between the program and the APRS server, thus keeping the ability to directly connect to APRS-IS or not, depending on the system owner wish. I run mostly DStar Only repeaters, having an additional program to maintain is unnecessary burden.
- DRats : Is on the to-do list see #6
- CallSign Server : this is a legacy from the dead project xreflector.net, I will most probably drop it for good.
3. Building and installing
3.1. Initial setup
Clone the repository (only required initally)
git clone https://github.com/F4FXL/DStarGateway.git
cd DStarGateway
3.2. Get latest stable version (recommended)
From inside the cloned repository run following commands to get the latest stable version
git pull -p
git fetch --tags
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
git checkout $latestTag
3.3. Get latest development version version
git checkout develop
3.4. Prerequisites and dependencies
Before first time building you need to install dependencies and prerequisites
apt install build-essential libcurl4-openssl-dev libboost-dev
If you are going to build with gpsd support, also install libgps-dev
apt install libgps-dev
3.5. Building
Regular building
make
3.5.0.1. Build With GPSD Support
make USE_GPS=1
3.6. Installing
The program is meant to run as a systemd service. All bits an pieces are provided.
sudo make install
3.7. Configuring
After installing you have to edit the configuration file. If you went with default paths, the config file is located in /usr/local/etc/dstargateway.cfg
The configuration format is quite straight forward. It is organised in sections and key/value pairs. The order of the sections or key/values pairs inside the sections does not matter nor does casing. Boolean values can be set using true, false, 1 or 0 Floating point values must use . (point) as decimal separatorsensitive.
When done with configuration, the daemon will be started automatically on boot. To manual start and stop it use the usual systemd commands
sudo systemctl start dstargateway.service
sudo systemctl stop dstargateway.service
4. Contributing
4.1. Work Flow
I Use Git flow as my workflow. PR are welcome but pleasee observe following rules :
- You have tested your code thoroughly
- Compilation produces no warnings
- Code formating rules are observed (these are very lousy though)
5. Version History
5.1. Version 0.4
- [Improvement] Add APRS status link feature (#8)
- [Bugfix] Posotions received over radio were not sent to APRS-IS when GPDS connection failed. (#7)
- [Improvement] Bring back GPSD support (https://github.com/F4FXL/DStarGateway/issues/6)
- [Improvement] Log enhancements ([#4])(https://github.com/F4FXL/DStarGateway/issues/4)
5.2. Version 0.3
- [Improvement] Get ride of libcongif++ dependency. When upgrading from earlier version you need to manualy delete the config file before reinstalling.
5.3. Version 0.2
- [Bugfix] ircDDBFreeze when repeater not found (#1)
- Code sanitization
5.4. Version 0.1
First working version
6. Future
I started this during my 2021 seasons holiday. It took me almost 8 days to get to a workable version. Here are a couple of stuff I'd like to do :
- ☒ Better NatTraversal
- No banging on every gateway: use ircDDB (or something else) as mitigation server to notify peer
- Support for all protocols (G2, DExtra, DCS, REF)
- A branch already exists for this
- ☑ Send the connection status to APRS-IS as a status frame
- ☒ Reinstantiate DRATS
- ☒ Migrate all the "accessories" (VoiceTransmit, RemoteControl ...)
- ☒ Automatic refresh of host files
- ☒ Reduce ircDDB dependency, build something more P2P, maybe based on Distributed Hashtable ?
- Everything that might come handy to make dstar the most powerful system ever :)