You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
9.6 KiB
174 lines
9.6 KiB
- [1. Introduction](#1-introduction)
|
|
- [2. Current State](#2-current-state)
|
|
- [2.1. Code sanity](#21-code-sanity)
|
|
- [2.2. Code Credits](#22-code-credits)
|
|
- [2.3. Thanks](#23-thanks)
|
|
- [2.4. Features](#24-features)
|
|
- [2.4.1. Features that where left out :](#241-features-that-where-left-out-)
|
|
- [2.4.2. Additional Features :](#242-additional-features-)
|
|
- [3. Building and installing](#3-building-and-installing)
|
|
- [3.1. Initial setup](#31-initial-setup)
|
|
- [3.2. Get latest stable version (recommended)](#32-get-latest-stable-version-recommended)
|
|
- [3.3. Get latest development version version](#33-get-latest-development-version-version)
|
|
- [3.4. Prerequisites and dependencies](#34-prerequisites-and-dependencies)
|
|
- [3.5. Building](#35-building)
|
|
- [3.5.0.1. Build With GPSD Support](#3501-build-with-gpsd-support)
|
|
- [3.5.0.2. Debug Build](#3502-debug-build)
|
|
- [3.6. Installing](#36-installing)
|
|
- [3.7. Configuring](#37-configuring)
|
|
- [4. Contributing](#4-contributing)
|
|
- [4.1. Work Flow](#41-work-flow)
|
|
- [4.2. Continuous Integration](#42-continuous-integration)
|
|
- [5. Version History](#5-version-history)
|
|
- [5.1. Version 0.6](#51-version-06)
|
|
- [5.2. Version 0.5](#52-version-05)
|
|
- [5.3. Version 0.4](#53-version-04)
|
|
- [5.4. Version 0.3](#54-version-03)
|
|
- [5.5. Version 0.2](#55-version-02)
|
|
- [5.6. Version 0.1](#56-version-01)
|
|
- [6. Future](#6-future)
|
|
|
|
|
|
# 1. Introduction
|
|
This is a port of G4KLX Jonathan Naylor's [ircddbGateway](https://github.com/g4klx/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 it is a mix of C and C++ of various ages and there is plenty of room for rework. 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 Credits
|
|
- Jonathan Naylor G4KLX (The original author of [ircddbGateway](https://github.com/g4klx/ircDDBGateway))
|
|
- Thomas A. Early N7TAE (Code taken from his [smart-group](https://github.com/n7tae/smart-group-server) software)
|
|
- Geoffrey Merck F4FXL / KC3FRA [That's me !](https://github.com/F4FXL/)
|
|
## 2.3. Thanks
|
|
- Cyrille F1MHV / DF1CHB for the testing
|
|
- Jonathan Naylor G4KLX for all the work ahead and the rock solid code base
|
|
## 2.4. Features
|
|
All the features found in ircddbGateway are supposed to be working. Except the ones listed below
|
|
|
|
### 2.4.1. 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](https://github.com/F4FXL/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](#6)
|
|
- CallSign Server : this is a legacy from the dead project xreflector.net, I will most probably drop it for good.
|
|
|
|
### 2.4.2. Additional Features :
|
|
- DPlus, DExtra and G2 NAT Traversal using ircddb network as rendez-vous server
|
|
- Forward RSMS1A app messages from/to APRS-IS Network, yes you can send/receive messages to and from aprs.
|
|
- Repeater Link status is sent to APRS-IS as a status frame
|
|
|
|
# 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
|
|
```
|
|
sudo apt install build-essential libcurl4-openssl-dev libboost-dev
|
|
```
|
|
If you are going to build with gpsd support, also install libgps-dev
|
|
```
|
|
sudo apt install libgps-dev
|
|
```
|
|
## 3.5. Building
|
|
Regular building
|
|
```
|
|
make
|
|
```
|
|
#### 3.5.0.1. Build With GPSD Support
|
|
```
|
|
make USE_GPS=1
|
|
```
|
|
#### 3.5.0.2. Debug Build
|
|
```
|
|
make ENABLE_DEBUG=1
|
|
```
|
|
Note that this will link with libl
|
|
## 3.6. Installing
|
|
The program is meant to run as a systemd service. All bits an pieces are provided.
|
|
```
|
|
sudo make install newhostfiles
|
|
```
|
|
## 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](https://danielkummer.github.io/git-flow-cheatsheet/) 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)
|
|
## 4.2. Continuous Integration
|
|
I have added some basic CI using CircleCI [](https://app.circleci.com/pipelines/github/F4FXL/DStarGateway?filter=all) I am trying to rewrite the code so that it can be put into some Behavior Driven Development scheme. This is a long haul task and I'll try do do it on the go while changing/adding stuff.
|
|
the testing framwework used is Google Test.
|
|
|
|
# 5. Version History
|
|
## 5.1. Version 0.6
|
|
- [**Improvement**] Add time server
|
|
- [**Improvement**] Gracefully exit on SIGINT and SIGTERM ([#21](https://github.com/F4FXL/DStarGateway/issues/21)). DStarGateway can also be run as a "forking" daemon. This might be required for distros still using sysv. Systemd can live without it.
|
|
- [**Improvement**] Add text transmit utility dgwtexttransmit ([#18](https://github.com/F4FXL/DStarGateway/issues/18))
|
|
- [**Improvement**] Add voice transmit utility dgwvoicetransmit ([#18](https://github.com/F4FXL/DStarGateway/issues/18))
|
|
## 5.2. Version 0.5
|
|
- [**Improvement**] Add remote control utility dgwremotecontrol ([#17](https://github.com/F4FXL/DStarGateway/issues/17))
|
|
- [**Bugfix**] Two simultaneous incoming G2 streams would fail to be transmitted on dual band repeaters ([#16](https://github.com/F4FXL/DStarGateway/issues/16))
|
|
- [**Improvement**] Add NAT Traversal for G2 and DExtra, using IRCDDB as a Rendez Vous server ([#5](https://github.com/F4FXL/DStarGateway/issues/5))
|
|
- [**Improvement**] Add forwarding of RS-MS1A messages to APRS-IS ([#9](https://github.com/F4FXL/DStarGateway/issues/9))
|
|
- [**Bugfix**] Failed to download XLX Hosts when URL contains a = sign ([#14](https://github.com/F4FXL/DStarGateway/issues/14))
|
|
- [**Bugfix**] Remote control connection failed ([#13](https://github.com/F4FXL/DStarGateway/issues/13))
|
|
- [**Bugfix**] Trying to connect to ghost ircDDB when no ircDDB is configured
|
|
## 5.3. Version 0.4
|
|
- [**Improvement**] Add APRS status link feature ([#8](https://github.com/F4FXL/DStarGateway/issues/8))
|
|
- [**Bugfix**] Posotions received over radio were not sent to APRS-IS when GPDS connection failed. ([#7](https://github.com/F4FXL/DStarGateway/issues/7))
|
|
- [**Improvement**] Bring back GPSD support ([#6](https://github.com/F4FXL/DStarGateway/issues/6))
|
|
- [**Improvement**] Log enhancements ([#4](https://github.com/F4FXL/DStarGateway/issues/4))
|
|
## 5.4. Version 0.3
|
|
- [**Improvement**] Get ride of libcongig++ dependency. When upgrading from earlier version you need to manualy delete the config file before reinstalling.
|
|
## 5.5. Version 0.2
|
|
- [**Bugfix**] ircDDBFreeze when repeater not found ([#1](https://github.com/F4FXL/DStarGateway/issues/1))
|
|
- Code sanitization
|
|
## 5.6. 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, DPlus) DCS does nto make sense as it was historically never used as protocol for linking repeaters
|
|
- ☑ 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](https://github.com/DavidKeller/kademlia) ?
|
|
- ☒ Forward messages from RS-MS1A to APRS and vice versa
|
|
- Everything that might come handy to make dstar the most powerful system ever :)
|